package com;

/**
 * Created with IntelliJ IDEA.
 * Description:判断是不是二叉搜索树
 * User: YJ
 * Date: 2024-5-31
 * Time: 10:59
 */
public class isValidBSTTest {

    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        TreeNode root = new TreeNode(2);
        TreeNode l = new TreeNode(1);
        TreeNode r = new TreeNode(3);
        root.left = l;
        root.right = r;
        boolean validBST = isValidBST(root);
        System.out.println(validBST);
    }

    //设置最小值
    static int pre = Integer.MIN_VALUE;

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     * 思路：
     * 1.定义一个变量作为最小整数值
     * 2.当树为空时，返回true
     * 3.树不为空，进入左子数，判断当前值与最小值的大小，
     * -若大于最小值，则将该值作为新的最小值，继续比较
     * -若小于最小值，则返回false
     * 4.左子树比较完后，进入右子树，继续比较
     *
     * @param root TreeNode类
     * @return bool布尔型
     */
    public static boolean isValidBST(TreeNode root) {
        // write code here
        if (root == null) return true;
        //进入左子树
        if (!isValidBST(root.left)) return false;
        if (root.val < pre) return false;
        //更新最小值
        pre = root.val;
        //进入右子树
        return isValidBST(root.right);
    }
}
